#ifndef PICCOLO_RENDER_CONTEXT_H
#define PICCOLO_RENDER_CONTEXT_H

#include "Graphics/PiccoloVKGraphicsContext.h"
#include "Graphics/PiccoloVKSwapchain.h"
#include "Graphics/PiccoloVKDevice.h"

namespace Piccolo
{
    class PiccoloRenderContext
    {
    public:
        PiccoloRenderContext(PiccoloWindow* window);
        ~PiccoloRenderContext();

        PiccoloGraphicsContext* GetGraphicsContext() const { return mGraphicsContext.get(); }
        PiccoloVKDevice* GetDevice() const { return mDevice.get(); }
        PiccoloVKSwapchain* GetSwapchain() const { return mSwapchain.get(); }

    private:
        std::shared_ptr<PiccoloGraphicsContext> mGraphicsContext;
        std::shared_ptr<PiccoloVKDevice> mDevice;
        std::shared_ptr<PiccoloVKSwapchain> mSwapchain;
    };
}

#endif